task-stash の 開発ログ
Ctrl + Fですぐ検索できるようにしておく。
英語名は記憶に定着させやすくするため
ナンバリングだけだとわかりにくい
定義のところには)を付記してあるので、定義を参照したければ英語名+)で検索をかける 一意なIDを維持するため
要求
i with-ease)
ユーザーは自分の思ったことを思考停止状態でもすぐに書き出して保管できる。 ii imoduru)
そこから書きたいことが芋づる式に思いついたら、それを受け止める場がある。 書くべきことを少なくしただけだと、初めに書いた後に書きたいことが湧き上がっても書けなくなる。
与える情報量は多ければ多いほどいいので、そういうやる気がある時はそれを受け入れたい
iii memento)
通知以外の方法で、過去に保管した内容をほどほどに目に入れることができる。
iv enough-info)
未来の自分から見て、思ったことに対して誤解しない程度の情報量を含んでいる タイトルと質問一つを一文で投げかける程度で良い
要求しないこと
そこからさらに開発を進めていく
すごく愚直なコードでもコピーが大量発生しようが、$ O(n!)だろうがいいのでとりあえず作る
いや、$ O(n!)は困るかも....
いずれにせよ、$ nは十分に小さいものとみなして良い
とりあえずまずは使ってみたい
外部仕様
1: append)
アプリケーションは以下の挙動を踏む
1-1: args)
/icons/pass.iconアプリはこのような引数を取り起動する
$ scrap-stash push "title"
/icons/pass.icon1-1-2: scrapbox)
-s "project"コマンド: Scrapboxで専用のプロジェクトページを開く 1-1-3: default project)
1-1-5: template)
1-1-4: alias) (optional)
もっと利用頻度が高い場合は$ alias ssp=scrap-stash pushとでもすればよい
1-2: no -s behaviour)
-sが設定されていない限り、次の質問を問う
1-2-1: background)
1-2-2: want)
できるだけ手間を減らしたい(titleに何がやりたいかは書かれるはず)
? want: で、一文で解決したいことを説明する。
1-2-3: expected)
? expected: で、一文で解決したいことを説明する。
1-3: read and history)
IDがついている
要件mementoの達成のため。
1-4: save)
code:typescript
{
id: string;
date: string;
title: string;
background: string;
want: string;
expected: string;
scrapbox_url: string;
}
タスクには一意なIDがつけられる。
1-5: finished)
終了する
2: delete)
タスクの削除動作
アプリケーションは以下の挙動を踏む
2-1: args)
$ scrap-stash pop ${number}
-p: pop
引数がなければ、一番上のものが取り出される
2-2: check)
上にタスク概要を表示しながら、以下を表示し、標準入力を受け取る delete? [yN]
y|N以外だったら実行を一旦停止する。
2-3: clean-up)
2-3-2 finish-display) データを削除したら、なんらかのレスポンスを返し終了する。
2-3-3 record-scrapbox) (option) scrapboxに削除したタスクを記録しておく。
3: dump)
$ scrap-stash dump
表示形式は問わない。
ただし、各項目については改行を挟んで、どこからがアイテムの開始点かがわかりやすいのが望ましい
4: detail)
$ scrap-stash detail {id}
idに対応するタスクの詳細を表示する
表示形態は問わない。
プロトタイプとして開発するにあたっては書き込みのあれこれを考えなくてもいい これがでかい
適当に思い通りに書き散らしても、コンパイラのエラーに従ってさえいればうまく動いてくれることが多い 自分の理想をあっさりと実現しやすいので、プロトタイプにはもってこい 今回の機能は、この開発事例で使用したもので全て賄える。
慣れるため
/icons/pass.icon- 18:00 1-1:args) を実装する
C-w + hlで分割を跨いでカーソル切り替え
(自分で設定) option + nでタブ切り替え
dw ワード削除
b 前の単語に移動
^ インデントを考慮した行頭
>>ですでに入力されている行に対してインデントを入れる。
いけたわ
https://scrapbox.io/files/652a574f4e32e1001b708f76.png
/icons/pass.icon1-1-2 scrapboxの実装
openコマンド使えばええかな
Rustからブラウザを開く: WebでRustを動かす方法が大半
英語で調べてみよう
ファイルの追加
:e使った方が早いか
openコマンドの実行
いけた!
https://scrapbox.io/files/652d00eb093f40001c7fccde.png
1-1-3: default project
clapの仕様
-sが指定されていて入力がない状態(デフォルト) ---> 文字列でくる
-sが指定されている状態 ---> 文字列でくる
-sが指定されていないとき ---> 値なし
urlの受け取りはOptionでいい感じだ